package part01_七大原则.p01_单一职责原则;

/**
 * @ClassName: SingleResponsibility_01
 * @Author: AllenSun
 * @Date: 2019/12/2 21:51
 */
public class SingleResponsibility_01 {
    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("摩托车");
        vehicle.run("汽车");
        vehicle.run("飞机");
        System.out.println("上面的方法违反了单一职责原则，下面类遵守单一职责原则--------------");

        RoadVehicle roadVehicle = new RoadVehicle();
        roadVehicle.run("摩托车");
        roadVehicle.run("汽车");
        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飞机");

        System.out.println("上面的类遵守单一职责原则，下面是方法遵守单一职责原则--------------");

        VehicleUpdata vehicleUpdata = new VehicleUpdata();
        vehicleUpdata.runRoad("摩托车");
        vehicleUpdata.runRoad("汽车");
        vehicleUpdata.runAir("飞机");
        vehicleUpdata.runWater("轮船");
    }
}

//1-违反了单一职责原则的例子
class Vehicle{
    //违反了“单一职责原则”，一个方法应该只有一个作用
    //解决方法就是，根据交通工具运行方法不同，分解成不同的类
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上运行...");
    }
}

//2-类遵守单一职责原则的例子
//下面按照交通工具的不同，设计了不同作用的类
class RoadVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上运行...");
    }
}
class AirVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在天空上运行...");
    }
}

//3-类没遵守，但是方法遵守单一职责原则
class VehicleUpdata{
    public void runRoad(String vehicle){
        System.out.println(vehicle+"在公路上运行...");
    }

    public void runAir(String vehicle){
        System.out.println(vehicle+"在天空上运行...");
    }

    public void runWater(String vehicle){
        System.out.println(vehicle+"在水面上运行...");
    }
}